The present invention relates to the field of testing software applications. More specifically, the invention relates to generating functional test cases for testing software applications.
The primary purpose for testing software applications is to identify defects, so that these defects or errors may be corrected. Typically, during the testing phase of a software development life cycle, a software application is tested to identify its ambiguities, incompleteness, and errors. The scope of testing the software application includes examination and execution of a software code in different environments and conditions. It also includes examining the quality aspects of the software code.
Software testing generally includes two critical phases—test planning and test execution. The test planning phase includes creation and maintenance of test cases, data, and scripts. A test case or a test scenario in software engineering generally includes a unique identifier, requirement references from design specifications, preconditions, events, a series of steps or actions to perform, input, output, expected results, and actual results. The test execution phase includes executing the software based on the test plans and test cases, and reporting any errors found to the development team. Thereafter, the development team rectifies the errors either in the design of the software application or in the software code.
Presently, the test execution phase has been significantly automated. Existing test automation frameworks aim at automating the test execution phase. However, the test planning phase is largely performed manually. In many Information Technology (IT) organizations, test cases, data, and scripts are created manually and maintained from Software Requirements Specifications (SRS). With the advancement in the software technology, the complexity of the software applications is increasing significantly, resulting in an increase in the number of test cases. Therefore, the test planning phase is effort intensive and prone to human errors. Further, the existing techniques used for automatic generation of test cases are used for testing embedded software and are not useful in the general application testing domain as the embedded software applications have a wide range of deployment architectures in comparison to the general software applications. Furthermore, the existing techniques generate test cases from unstructured Unified Modeling Language (UML) use-case activity diagrams or UML state diagrams.
In light of the discussion above, there is a need for a method, system and computer program product for automatically generating functional test cases for testing software applications. Further, the method should be computationally efficient.